﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IrishSettings
{
    /// <summary>
    /// This class allows for retrieving and updating settings values, plus any other high level transaction
    /// that a client application might need.  The interface allows for a cached an non-cached settings manager to
    /// be implemented.
    /// </summary>
    /// <remarks>
    /// This interface is the primary interface for client applications to interact with the settings library.
    /// </remarks>
    public interface IIrishSettingsManager
    {
        SettingsValues Initialize();
        void Set(string name, object value);

        /// <summary>
        /// Saves SettingsDictionary values to the database
        /// </summary>
        void Save();

        GenericSetting Setting(string name);
        GenericSetting this[string name] { get; set; }

        /// <summary>
        /// Put all values back to defaults.
        /// </summary>
        void Reset();

    }
}
